package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;

import Modelo.*;
import Vistas.VentanaArbitro;
import Vistas.VentanaConsultar;
import Vistas.VentanaConsultarModeloTabla;
import Vistas.VentanaConsultarModeloTablaPosiciones;
import Vistas.VentanaEquipo;
import Vistas.VentanaInicio;


public class ControladorLiga implements ActionListener{
	
	Liga liga = new Liga();
	VentanaInicio ventanaPrincipal;
	boolean archivosCargados[] = new boolean[4];
	private ArrayList<Partido> partidos = new ArrayList<Partido>();
	
	public void Generar()
	{
		int T = liga.getEquipos().size();
    	
    	Date fecha = new Date();
    	int r = 0;
    	boolean []umpireParticipacion ;
    	
    	for(int k = 0;k < 2;k++)
    	{
    		ArrayList<Integer>l = new ArrayList<Integer>();
        	for(int i = 0;i < T;i++)
        		l.add(i);
        	
        	
	    	for(int i = 0;i < T-1;i++)
	    	{
	    		int x = l.get(0);
	    		
	    		l.remove(0);
	    		
	    		l.add(x);
	    		
	    	
	    		fecha.setDate(fecha.getDate() + 1);
	    		
	    		
	    		 if(fecha.getDay() == 1)
	    			fecha.setDate(fecha.getDate() + 1);
 	    		
	    		umpireParticipacion = new boolean[liga.getUmpire().size()];
	        	for(int c = 0;c < liga.getUmpire().size();c++)
	        		umpireParticipacion[c] = false;
	        	
	    		
	    		if(i%2 == 0)
	    		{
	    			for(int j = 0;j < T;j+= 2)
	    			{
	    				Partido p = new Partido();
	    				
	    				p.setFecha(fecha);
	    				
	    				boolean []impulsoresVisitante = new boolean [9];
	    				boolean []impulsoreshome = new boolean [9];
	    				boolean []homronerosVisitante = new boolean [9];
	    				boolean []homroneroshome = new boolean [9];
	    				
	    				for(int c = 0;c < 9;c++)
	    				{
	    					impulsoreshome[c] = false;
	    					impulsoresVisitante[c] = false;
	    					homroneroshome[c] = false;
	    					homronerosVisitante[c] = false;
	    				}
	    				
	    				Equipo visitante = liga.getEquipos().get(j);
	    				Equipo home = liga.getEquipos().get(l.get(j));
	    				
	    				r = (int)(liga.getUmpire().size() * Math.random()) ;
	    				
	    				while(umpireParticipacion[r])
	    					 r = (int)(liga.getUmpire().size() * Math.random()) ;
	    				
	    				Umpire umpire = liga.getUmpire().get( r );
	    				
	    				umpire.setCantJuegos(umpire.getCantJuegos() + 1);
	    				
	    			    p.setVisitante(visitante);
	    			 
	    			    p.setHomeClub(home);
	    			    
	    			    p.setUmpire(umpire);
	    			    
	    			    //carreras
	    			    
	    			    int carrerasVisitante = (int)(15 * Math.random());
	    			    
	    			    int carrerasHome = (int)(15 * Math.random());
	    			    
	    			    while(carrerasVisitante == carrerasHome)
	    			    {
	    			    	carrerasVisitante += (int)(15 * Math.random());
	    			    	carrerasHome += (int)(15 * Math.random());
	    			    
	    			    	p.setInnings(p.getInnings() + 1);
	    			    }
	    			    
	    			  //asignamps carreras a los jugadores
	    			    
	    			    for(int c = 0;c < carrerasVisitante;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	visitante.getJugadores()[r].setCarrerasImpulsadas(visitante.getJugadores()[r].getCarrerasImpulsadas() + 1);
	    			    
	    			        impulsoresVisitante[r] = true;
	    			    
	    			    }
	    			    
	    			    for(int c = 0;c < carrerasHome;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	home.getJugadores()[r].setCarrerasImpulsadas(
	    			    			home.getJugadores()[r].getCarrerasImpulsadas() + 1);
	    			   
	    			    	impulsoreshome[r] = true;
	    			    }
	    			    //declaramos e iniciamos los ArrayList
	    			    
	    			    ArrayList<Jugador>impulsadoresCarrerasHome = new ArrayList<Jugador>();
	    			    ArrayList<Jugador>impulsadoresCarrerasVisitante = new ArrayList<Jugador>();
	    			    
	    			    for(int c = 0;c < 9;c++)
	    			    {
	    			    	if(impulsoreshome[c])
	    			    		impulsadoresCarrerasHome.add(home.getJugadores()[c]);
	    			       			    
	    			    	if(impulsoresVisitante[c])
	    			    		impulsadoresCarrerasVisitante.add(visitante.getJugadores()[c]);
	    			    }
	    			    
	    			    p.setJugadoresCarrerasHome(impulsadoresCarrerasHome);
	    			    p.setJugadoresCarrerasVisitante(impulsadoresCarrerasVisitante);
	    			    
	    			    
	    			    // HomeRun
	    			    
	    			    int homeRunsHome = (int)(Math.random() * Math.min(2,carrerasHome));
	    			    int homeRunsVisitante = (int)(Math.random() * Math.min(2,carrerasVisitante));
	    			    
	    			    for(int c = 0;c < homeRunsHome;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	while(!impulsoreshome[r])
	    			    		r = (int)Math.random() * 8;
	    			    
	    			    	homroneroshome[r] = true;
	    			    
	    			    	home.getJugadores()[r].setHomeruns(home.getJugadores()[r].getHomeruns() + 1);
	    			    }
	    			    
	    			    for(int c = 0;c < homeRunsVisitante;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	while(!impulsoresVisitante[r])
	    			    		r = (int)Math.random() * 8;
	    			    
	    			    	homronerosVisitante[r] = true;
	    			    
	    			    	visitante.getJugadores()[r].setHomeruns(visitante.getJugadores()[r].getHomeruns() + 1);
	    			    }
	    			  
	    			    ArrayList<Jugador>homeRunsCarrerasHome = new ArrayList<Jugador>();
	    			    ArrayList<Jugador>homeRunsCarrerasVisitante = new ArrayList<Jugador>();
	    			    
	    			    for(int c = 0;c < 9;c++)
	    			    {
	    			    	if(homroneroshome[c])
	    			    		homeRunsCarrerasHome.add(home.getJugadores()[c]);
	    			       			    
	    			    	if(homronerosVisitante[c])
	    			    		homeRunsCarrerasVisitante.add(visitante.getJugadores()[c]);
	    			    }
	    			    
	    			    p.setJugadoresCuadrangularesHome(homeRunsCarrerasHome);
	    			    p.setJugadoresCuadrangularesVisitante(homeRunsCarrerasVisitante);
	    			    
	    			    
	    			    p.setCarrerasHome(carrerasHome);
	    			    p.setCarrerasVisitante(carrerasVisitante);
	    			    
	    			    partidos.add(p);
	    			    
	    			    visitante.setJuegosJugados(visitante.getJuegosJugados() + 1);
	    			    home.setJuegosJugados(home.getJuegosJugados() + 1);
	    			    
	    			    if(carrerasHome > carrerasVisitante)
	    			    {
	    			    	visitante.setJuegosPerdidos(visitante.getJuegosPerdidos() +1);
	    			    	home.setJuegosGanados(home.getJuegosGanados() +1);
	    			    }
	    			    else
	    			    {
	    			    	home.setJuegosPerdidos(home.getJuegosPerdidos() +1);
	    			    	visitante.setJuegosGanados(visitante.getJuegosGanados() + 1);
	    			    }
	    			 }	
	        		
	    		}
	    		else
	    		{
	    			for(int j = 0;j < T/2;j++)
	    			{
	    				Partido p = new Partido();
	    				
	    				p.setFecha(fecha);
	    				
	    				boolean []impulsoresVisitante = new boolean [9];
	    				boolean []impulsoreshome = new boolean [9];
	    				boolean []homronerosVisitante = new boolean [9];
	    				boolean []homroneroshome = new boolean [9];
	    				
	    				for(int c = 0;c < 9;c++)
	    				{
	    					impulsoreshome[c] = false;
	    					impulsoresVisitante[c] = false;
	    					homroneroshome[c] = false;
	    					homronerosVisitante[c] = false;
	    				}
	    				
	    				Equipo visitante = liga.getEquipos().get(j);
	    				Equipo home = liga.getEquipos().get(l.get(j));
	    				
	    				r = (int)(liga.getUmpire().size() * Math.random()) ;
	    				
	    				while(umpireParticipacion[r])
	    					 r = (int)(liga.getUmpire().size() * Math.random()) ;
	    				
	    				Umpire umpire = liga.getUmpire().get( r );
	    				
	    				umpire.setCantJuegos(umpire.getCantJuegos() + 1);
	    				
	    			    p.setVisitante(visitante);
	    			 
	    			    p.setHomeClub(home);
	    			    
	    			    p.setUmpire(umpire);
	    			    
	    			    int carrerasVisitante = (int)(15 * Math.random());
	    			    
	    			    int carrerasHome = (int)(15 * Math.random());
	    			    
	    			    while(carrerasVisitante == carrerasHome)
	    			    {
	    			    	carrerasVisitante += (int)(15 * Math.random());
	    			    	carrerasHome += (int)(15 * Math.random());
	    			    
	    			    	p.setInnings(p.getInnings() + 1);
	    			    }
	    			    
	    			    
	    			    for(int c = 0;c < carrerasVisitante;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	visitante.getJugadores()[r].setCarrerasImpulsadas(
	    			    			visitante.getJugadores()[r].getCarrerasImpulsadas() + 1);
	    			    
	    			        impulsoresVisitante[r] = true;
	    			    
	    			    }
	    			    
	    			    for(int c = 0;c < carrerasHome;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	home.getJugadores()[r].setCarrerasImpulsadas(
	    			    			home.getJugadores()[r].getCarrerasImpulsadas() + 1);
	    			   
	    			    	impulsoreshome[r] = true;
	    			    }
	    			    
	    			    ArrayList<Jugador>impulsadoresCarrerasHome = new ArrayList<Jugador>();
	    			    ArrayList<Jugador>impulsadoresCarrerasVisitante = new ArrayList<Jugador>();
	    			    
	    			    for(int c = 0;c < 9;c++)
	    			    {
	    			    	if(impulsoreshome[c])
	    			    		impulsadoresCarrerasHome.add(home.getJugadores()[c]);
	    			       			    
	    			    	if(impulsoresVisitante[c])
	    			    		impulsadoresCarrerasVisitante.add(visitante.getJugadores()[c]);
	    			    }
	    			    
	    			    p.setJugadoresCarrerasHome(impulsadoresCarrerasHome);
	    			    p.setJugadoresCarrerasVisitante(impulsadoresCarrerasVisitante);
	    			    
	    			    
	    			    // HomeRun
	    			    
	    			    int homeRunsHome = (int)(Math.random() * Math.min(2,carrerasHome));
	    			    int homeRunsVisitante = (int)(Math.random() * Math.min(2,carrerasVisitante));
	    			    
	    			    for(int c = 0;c < homeRunsHome;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	while(!impulsoreshome[r])
	    			    		r = (int)Math.random() * 8;
	    			    
	    			    	homroneroshome[r] = true;
	    			    
	    			    	home.getJugadores()[r].setHomeruns(home.getJugadores()[r].getHomeruns() + 1);
	    			    }
	    			    
	    			    for(int c = 0;c < homeRunsVisitante;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	while(!impulsoresVisitante[r])
	    			    		r = (int)Math.random() * 8;
	    			    
	    			    	homronerosVisitante[r] = true;
	    			    
	    			    	visitante.getJugadores()[r].setHomeruns(visitante.getJugadores()[r].getHomeruns() + 1);
	    			    }
	    			  
	    			    ArrayList<Jugador>homeRunsCarrerasHome = new ArrayList<Jugador>();
	    			    ArrayList<Jugador>homeRunsCarrerasVisitante = new ArrayList<Jugador>();
	    			    
	    			    for(int c = 0;c < 9;c++)
	    			    {
	    			    	if(homroneroshome[c])
	    			    		homeRunsCarrerasHome.add(home.getJugadores()[c]);
	    			       			    
	    			    	if(homronerosVisitante[c])
	    			    		homeRunsCarrerasVisitante.add(visitante.getJugadores()[c]);
	    			    }
	    			    
	    			    p.setJugadoresCuadrangularesHome(homeRunsCarrerasHome);
	    			    p.setJugadoresCuadrangularesVisitante(homeRunsCarrerasVisitante);
	    			    
	    			    
	    			    p.setCarrerasHome(carrerasHome);
	    			    p.setCarrerasVisitante(carrerasVisitante);
	    			    
	    			    partidos.add(p);
	    			    
	    			    visitante.setJuegosJugados(visitante.getJuegosJugados() + 1);
	    			    home.setJuegosJugados(home.getJuegosJugados() + 1);
	    			    
	    			    if(carrerasHome > carrerasVisitante)
	    			    {
	    			    	visitante.setJuegosPerdidos(visitante.getJuegosPerdidos() +1);
	    			    	home.setJuegosGanados(home.getJuegosGanados() +1);
	    			    }
	    			    else
	    			    {
	    			    	home.setJuegosPerdidos(home.getJuegosPerdidos() +1);
	    			    	visitante.setJuegosGanados(visitante.getJuegosGanados() + 1);
	    			    }
	    				
	    			}
	    		}
	    		
	    		
	    		
	    		fecha.setDate(fecha.getDate() + 1);	    		
	    		
	    		umpireParticipacion = new boolean[liga.getUmpire().size()];
	        	for(int c = 0;c < liga.getUmpire().size();c++)
	        		umpireParticipacion[c] = false;
	        	
	    		
	    		if(i%2 == 0)
	    		{
	    			for(int j = 0;j < T;j+= 2)
	        		{
	    				Partido p = new Partido();
	    				
	    				p.setFecha(fecha);
	    				
	    				boolean []impulsoresVisitante = new boolean [9];
	    				boolean []impulsoreshome = new boolean [9];
	    				boolean []homronerosVisitante = new boolean [9];
	    				boolean []homroneroshome = new boolean [9];
	    				
	    				for(int c = 0;c < 9;c++)
	    				{
	    					impulsoreshome[c] = false;
	    					impulsoresVisitante[c] = false;
	    					homroneroshome[c] = false;
	    					homronerosVisitante[c] = false;
	    				}
	    				
	    				Equipo visitante = liga.getEquipos().get(l.get(j));
	    				Equipo home = liga.getEquipos().get(j);
	    				
	    				r = (int)(liga.getUmpire().size() * Math.random()) ;
	    				
	    				while(umpireParticipacion[r])
	    					 r = (int)(liga.getUmpire().size() * Math.random()) ;
	    				
	    				Umpire umpire = liga.getUmpire().get( r );
	    				
	    				umpire.setCantJuegos(umpire.getCantJuegos() + 1);
	    				
	    			    p.setVisitante(visitante);
	    			 
	    			    p.setHomeClub(home);
	    			    
	    			    p.setUmpire(umpire);
	    			    
	    			    int carrerasVisitante = (int)(15 * Math.random());
	    			    
	    			    int carrerasHome = (int)(15 * Math.random());
	    			    
	    			    while(carrerasVisitante == carrerasHome)
	    			    {
	    			    	carrerasVisitante += (int)(15 * Math.random());
	    			    	carrerasHome += (int)(15 * Math.random());
	    			    
	    			    	p.setInnings(p.getInnings() + 1);
	    			    }
	    			    
	    			    
	    			    for(int c = 0;c < carrerasVisitante;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	visitante.getJugadores()[r].setCarrerasImpulsadas(
	    			    			visitante.getJugadores()[r].getCarrerasImpulsadas() + 1);
	    			    
	    			        impulsoresVisitante[r] = true;
	    			    
	    			    }
	    			    
	    			    for(int c = 0;c < carrerasHome;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	home.getJugadores()[r].setCarrerasImpulsadas(
	    			    			home.getJugadores()[r].getCarrerasImpulsadas() + 1);
	    			   
	    			    	impulsoreshome[r] = true;
	    			    }
	    			    
	    			    ArrayList<Jugador>impulsadoresCarrerasHome = new ArrayList<Jugador>();
	    			    ArrayList<Jugador>impulsadoresCarrerasVisitante = new ArrayList<Jugador>();
	    			    
	    			    for(int c = 0;c < 9;c++)
	    			    {
	    			    	if(impulsoreshome[c])
	    			    		impulsadoresCarrerasHome.add(home.getJugadores()[c]);
	    			       			    
	    			    	if(impulsoresVisitante[c])
	    			    		impulsadoresCarrerasVisitante.add(visitante.getJugadores()[c]);
	    			    }
	    			    
	    			    p.setJugadoresCarrerasHome(impulsadoresCarrerasHome);
	    			    p.setJugadoresCarrerasVisitante(impulsadoresCarrerasVisitante);
	    			    
	    			    
	    			    // HomeRun
	    			    
	    			    int homeRunsHome = (int)(Math.random() * Math.min(2,carrerasHome));
	    			    int homeRunsVisitante = (int)(Math.random() * Math.min(2,carrerasVisitante));
	    			    
	    			    for(int c = 0;c < homeRunsHome;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	while(!impulsoreshome[r])
	    			    		r = (int)Math.random() * 8;
	    			    
	    			    	homroneroshome[r] = true;
	    			    
	    			    	home.getJugadores()[r].setHomeruns(home.getJugadores()[r].getHomeruns() + 1);
	    			    }
	    			    
	    			    for(int c = 0;c < homeRunsVisitante;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	while(!impulsoresVisitante[r])
	    			    		r = (int)Math.random() * 8;
	    			    
	    			    	homronerosVisitante[r] = true;
	    			    
	    			    	visitante.getJugadores()[r].setHomeruns(visitante.getJugadores()[r].getHomeruns() + 1);
	    			    }
	    			  
	    			    ArrayList<Jugador>homeRunsCarrerasHome = new ArrayList<Jugador>();
	    			    ArrayList<Jugador>homeRunsCarrerasVisitante = new ArrayList<Jugador>();
	    			    
	    			    for(int c = 0;c < 9;c++)
	    			    {
	    			    	if(homroneroshome[c])
	    			    		homeRunsCarrerasHome.add(home.getJugadores()[c]);
	    			       			    
	    			    	if(homronerosVisitante[c])
	    			    		homeRunsCarrerasVisitante.add(visitante.getJugadores()[c]);
	    			    }
	    			    
	    			    p.setJugadoresCuadrangularesHome(homeRunsCarrerasHome);
	    			    p.setJugadoresCuadrangularesVisitante(homeRunsCarrerasVisitante);
	    			    
	    			    
	    			    p.setCarrerasHome(carrerasHome);
	    			    p.setCarrerasVisitante(carrerasVisitante);
	    			    
	    			    partidos.add(p);
	    			    
	    			    visitante.setJuegosJugados(visitante.getJuegosJugados() + 1);
	    			    home.setJuegosJugados(home.getJuegosJugados() + 1);
	    			    
	    			    if(carrerasHome > carrerasVisitante)
	    			    {
	    			    	visitante.setJuegosPerdidos(visitante.getJuegosPerdidos() +1);
	    			    	home.setJuegosGanados(home.getJuegosGanados() +1);
	    			    }
	    			    else
	    			    {
	    			    	home.setJuegosPerdidos(home.getJuegosPerdidos() +1);
	    			    	visitante.setJuegosGanados(visitante.getJuegosGanados() + 1);
	    			    }
	    				System.out.printf("(%d,%d) ",l.get(j),j); 
	        		}
	        		
	    		}
	    		else
	    		{
	    			for(int j = 0;j < T/2;j++)
	        		{
	    				Partido p = new Partido();
	    				
	    				p.setFecha(fecha);
	    				
	    				boolean []impulsoresVisitante = new boolean [9];
	    				boolean []impulsoreshome = new boolean [9];
	    				boolean []homronerosVisitante = new boolean [9];
	    				boolean []homroneroshome = new boolean [9];
	    				
	    				for(int c = 0;c < 9;c++)
	    				{
	    					impulsoreshome[c] = false;
	    					impulsoresVisitante[c] = false;
	    					homroneroshome[c] = false;
	    					homronerosVisitante[c] = false;
	    				}
	    				
	    				Equipo visitante = liga.getEquipos().get(l.get(j));
	    				Equipo home = liga.getEquipos().get(j);
	    				
	    				r = (int)(liga.getUmpire().size() * Math.random()) ;
	    				
	    				while(umpireParticipacion[r])
	    					 r = (int)(liga.getUmpire().size() * Math.random()) ;
	    				
	    				Umpire umpire = liga.getUmpire().get( r );
	    				
	    				umpire.setCantJuegos(umpire.getCantJuegos() + 1);
	    				
	    			    p.setVisitante(visitante);
	    			 
	    			    p.setHomeClub(home);
	    			    
	    			    p.setUmpire(umpire);
	    			    
	    			    int carrerasVisitante = (int)(15 * Math.random());
	    			    
	    			    int carrerasHome = (int)(15 * Math.random());
	    			    
	    			    while(carrerasVisitante == carrerasHome)
	    			    {
	    			    	carrerasVisitante += (int)(15 * Math.random());
	    			    	carrerasHome += (int)(15 * Math.random());
	    			    
	    			    	p.setInnings(p.getInnings() + 1);
	    			    }
	    			    
	    			    
	    			    for(int c = 0;c < carrerasVisitante;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	visitante.getJugadores()[r].setCarrerasImpulsadas(
	    			    			visitante.getJugadores()[r].getCarrerasImpulsadas() + 1);
	    			    
	    			        impulsoresVisitante[r] = true;
	    			    
	    			    }
	    			    
	    			    for(int c = 0;c < carrerasHome;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	home.getJugadores()[r].setCarrerasImpulsadas(
	    			    			home.getJugadores()[r].getCarrerasImpulsadas() + 1);
	    			   
	    			    	impulsoreshome[r] = true;
	    			    }
	    			    
	    			    ArrayList<Jugador>impulsadoresCarrerasHome = new ArrayList<Jugador>();
	    			    ArrayList<Jugador>impulsadoresCarrerasVisitante = new ArrayList<Jugador>();
	    			    
	    			    for(int c = 0;c < 9;c++)
	    			    {
	    			    	if(impulsoreshome[c])
	    			    		impulsadoresCarrerasHome.add(home.getJugadores()[c]);
	    			       			    
	    			    	if(impulsoresVisitante[c])
	    			    		impulsadoresCarrerasVisitante.add(visitante.getJugadores()[c]);
	    			    }
	    			    
	    			    p.setJugadoresCarrerasHome(impulsadoresCarrerasHome);
	    			    p.setJugadoresCarrerasVisitante(impulsadoresCarrerasVisitante);
	    			    
	    			    
	    			    // HomeRun
	    			    
	    			    int homeRunsHome = (int)(Math.random() * Math.min(2,carrerasHome));
	    			    int homeRunsVisitante = (int)(Math.random() * Math.min(2,carrerasVisitante));
	    			    
	    			    for(int c = 0;c < homeRunsHome;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	while(!impulsoreshome[r])
	    			    		r = (int)Math.random() * 8;
	    			    
	    			    	homroneroshome[r] = true;
	    			    
	    			    	home.getJugadores()[r].setHomeruns(home.getJugadores()[r].getHomeruns() + 1);
	    			    }
	    			    
	    			    for(int c = 0;c < homeRunsVisitante;c++)
	    			    {
	    			    	r = (int)Math.random() * 8;
	    			    	
	    			    	while(!impulsoresVisitante[r])
	    			    		r = (int)Math.random() * 8;
	    			    
	    			    	homronerosVisitante[r] = true;
	    			    
	    			    	visitante.getJugadores()[r].setHomeruns(visitante.getJugadores()[r].getHomeruns() + 1);
	    			    }
	    			  
	    			    ArrayList<Jugador>homeRunsCarrerasHome = new ArrayList<Jugador>();
	    			    ArrayList<Jugador>homeRunsCarrerasVisitante = new ArrayList<Jugador>();
	    			    
	    			    for(int c = 0;c < 9;c++)
	    			    {
	    			    	if(homroneroshome[c])
	    			    		homeRunsCarrerasHome.add(home.getJugadores()[c]);
	    			       			    
	    			    	if(homronerosVisitante[c])
	    			    		homeRunsCarrerasVisitante.add(visitante.getJugadores()[c]);
	    			    }
	    			    
	    			    p.setJugadoresCuadrangularesHome(homeRunsCarrerasHome);
	    			    p.setJugadoresCuadrangularesVisitante(homeRunsCarrerasVisitante);
	    			    
	    			    
	    			    p.setCarrerasHome(carrerasHome);
	    			    p.setCarrerasVisitante(carrerasVisitante);
	    			    
	    			    partidos.add(p);
	    			    
	    			    visitante.setJuegosJugados(visitante.getJuegosJugados() + 1);
	    			    home.setJuegosJugados(home.getJuegosJugados() + 1);
	    			    
	    			    if(carrerasHome > carrerasVisitante)
	    			    {
	    			    	visitante.setJuegosPerdidos(visitante.getJuegosPerdidos() +1);
	    			    	home.setJuegosGanados(home.getJuegosGanados() +1);
	    			    }
	    			    else
	    			    {
	    			    	home.setJuegosPerdidos(home.getJuegosPerdidos() +1);
	    			    	visitante.setJuegosGanados(visitante.getJuegosGanados() + 1);
	    			    }
	    				System.out.printf("(%d,%d) ",l.get(j),j); 
	        		}
	        		
	    		}
	    		
	    	}
    	}
    	
    	this.ventanaPrincipal.mostrarMensaje("Torneo simulado con exito!");
	}
	
	public ControladorLiga() {
		super();
		// TODO Auto-generated constructor stub
	
		ventanaPrincipal = new VentanaInicio();
		ventanaPrincipal.setLocationRelativeTo(null);
		ventanaPrincipal.setVisible(true);
		ventanaPrincipal.agregarListener(this);
		
		for(int i = 0;i < archivosCargados.length;i++)
			archivosCargados[i] = false;
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		
		System.out.println(arg0.getActionCommand());
		
		if(arg0.getActionCommand().equals("Equipos"))
		{
			ControladorVentanaEquipo ce = new ControladorVentanaEquipo(liga);			
		}
		else if(arg0.getActionCommand().equals("Arbitros"))
		{
			ControladorVentanaUmpire ca = new ControladorVentanaUmpire(liga);
		}

		else if(arg0.getActionCommand().equals("Generar"))
			{
			
				if(liga.getEquipos().size() < 4)
					this.ventanaPrincipal.mostrarMensaje("Faltan Equipos");
				else if(liga.getEquipos().size() / 2 > liga.getUmpire().size() )
					this.ventanaPrincipal.mostrarMensaje("Faltan Umpires");
				else
					Generar();
			}
		else if(arg0.getActionCommand().equals("Tabla de Posiciones"))
		{
			if(this.partidos.size() == 0)
				this.ventanaPrincipal.mostrarMensaje("Debe generar el torneo");
			else
			{
				VentanaConsultar v2 = new VentanaConsultar();//controlador para la reportes
			
				v2.setListado(new VentanaConsultarModeloTablaPosiciones(liga.getEquipos()));
				v2.setLocationRelativeTo(null);
				v2.setVisible(true);
			}
		}
		else if(arg0.getActionCommand().equals("Partidos"))
		{
			if(this.partidos.size() == 0)
				this.ventanaPrincipal.mostrarMensaje("Debe generar el torneo");
			else
			{
				VentanaConsultar v = new VentanaConsultar();
				
				v.setListado(new VentanaConsultarModeloTabla(partidos));
					
				v.setLocationRelativeTo(null);
				v.setVisible(true);
			}	
				
		}
	}


}
